home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1998 / MacHack 1998.toast / Programming Contest / Test Code Folder / Problem 10 Test Code / Main.cp
Encoding:
Text File  |  1998-06-08  |  1.3 KB  |  68 lines  |  [TEXT/CWIE]

  1. #include "Solution.h"
  2.  
  3. #include "ProblemUtils.h"
  4.  
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <Files.h>
  8. #include <Errors.h>
  9.  
  10. static OSErr ReadRegisterArray( Handle indata, RegisterArray registers )
  11. {
  12.     OSErr err;
  13.     char line[MAX_LINE_LEN];
  14.     char *linep;
  15.     
  16.     err = -1;
  17.     linep = line;
  18.     if ( ProblemReadLineFromHandle( indata, line, MAX_LINE_LEN ) ) {
  19.         err = noErr;
  20.         for ( int i = 0; i <= 25 && err == noErr; i++ ) {
  21.             if ( !ProblemGetSInt32( &linep, ®isters[i] ) ) {
  22.                 err = -2;
  23.             }
  24.         }
  25.         if ( err == noErr && *linep ) {
  26.             err = -3;
  27.         }
  28.     }
  29.     return err;
  30. }
  31.  
  32. pascal OSErr CheckInterpreter( const FSSpec* infile, const FSSpec* outfile, Boolean *correct )
  33. {
  34.     OSErr err;
  35.     Handle indata;
  36.     RegisterArray inregisters;
  37.     RegisterArray outregisters;
  38.     
  39.     *correct = false;
  40.     
  41.     err = ProblemFileRead( infile, &indata );
  42.     ProblemLogError( err, "CheckInterpreter: ProblemFileRead" );
  43.     if ( err == noErr ) {
  44.         err = ReadRegisterArray( indata, inregisters );
  45.         if ( err == noErr ) {
  46.             err = ReadRegisterArray( indata, outregisters );
  47.         }
  48.         if ( err == noErr ) {
  49.             Interpret( indata, inregisters );
  50.             *correct = true;
  51.             for ( int i = 0; i <= 25 && *correct; i++ ) {
  52.                 *correct = (inregisters[i] == outregisters[i]);
  53.             }
  54.         }
  55.         DisposeHandle( indata );
  56.     }
  57.     return err;
  58. }
  59.  
  60. int main()
  61. {
  62.     printf( "Starting\n" );
  63.     
  64.     ProblemRunSingleFileTests( CheckInterpreter );
  65.  
  66.     return 0;
  67. }
  68.